package com.shujia.array_.one;

import java.util.Arrays;

public class ArrayDemo {



    public static void main(String[] args) {
        // Java考试结束后，需要统计全班学员的平均分(30个人)。
        int score = 60;

        // 需要一个容器存储30个学生的成绩
        /*
        定义一个数组
        1, 确定数据类型
        2, 数据类型[] 数组变量名;
        只是定义, 此时数据是null
         */
        int[] arr;

        // 需要初始化才能使用
        // System.out.println(arr);

        // 动态初始化, 一定要确认长度
        // 30 就表示arr这个数组可以容纳30个int类型的数字
        arr = new int[30];

        // 动态初始化后, 系统会根据数据类型设置数组的默认值
        /*
        要看数组的类型, 如果是整型(byte, short, int, long) 初始化的默认值就是0
        float, double 初始化值是0
        Boolean 初始化值是false
        String 初始化值是null,
        数组 初始化值是null,
         */
        // arr 里面初始化了30个0
        System.out.println(arr);

        // 输出数组里面的所有的元素
        // Arrays 工具类提供了一个方法, toString(数组变量)
        System.out.println(Arrays.toString(arr));

        // 把学生的成绩报错的数组中
        // 数组元素的访问?
        // 用到索引, 下标
        System.out.println(arr[0]);// 第一个元素
        System.out.println(arr[1]);// 第二个元素

        // 写入数据到数组
        arr[0] = 70; // 对数组里面的第一个元素赋值
        arr[1] = 80;
        System.out.println(Arrays.toString(arr));

        // 30个元素, 第一个索引是0, 最大的索引就是30 - 1 -> 29
        for (int i = 0; i < 30; i++) {
            int randomScore = (int) (Math.random() * 100 + 1);
            arr[i] = randomScore;
        }

        System.out.println(Arrays.toString(arr));


        // 求和
        // 数组的遍历
        // int sum = arr[0] + arr[1] + .... + arr[29];
        int sum = 0;
        for (int i = 0; i < 30; i++) {
            sum += arr[i];
        }

        System.out.println("sum:" + sum);

        // 求数组里面成绩的平均分
        double avg = sum / 30.0;
        System.out.println("avg:" + avg);

    }
}
